home *** CD-ROM | disk | FTP | other *** search
-
- ==============================================================================
-
- Concepts of CyberSound audio subsystem
- (c) 1995 by Christian Buchner
-
- ==============================================================================
-
- WARNING: This information is preliminary and may change at any time.
- ------- Do not count on what you read here!
-
- Suggestions, improvements, critics, etc. welcome!
-
- EMAIL: flowerp@eikon.e-technik.tu-muenchen.de
-
- ==============================================================================
-
-
-
- Schematics of the new audio subsystem
- -------------------------------------
-
- sound.datatype audio.device
- \ /
- \ /
- \ /
- \ / "channels"
- \ /
- \ /
- cybersound.library
- (administration, mixing channels)
- / \
- / \
- / \
- / \ "stereo 16 bit audio stream"
- / \
- / \
- 14bit.driver toccata.driver ........driver
- | | |
- Amiga Hardware Toccata board other Hardware
-
- (DEVS:SoundDrivers)
-
-
-
- General
- -------
-
- The CyberSound software interface is supposed to provide a new, easy,
- flexible and powerful way of playing and manipulating sounds in different
- formats. At the same time, the audio.device will be replaced by an
- emulation that allows more channels than before.
-
- 8 and 16 bit samples, signed, unsigned, a-law, y-law etc will probably be
- supported. Playing streams will be supported as well. You will also be
- able to reverse the play direction.
-
- Below is a list of possible library functions to provide this interface.
- This is only the result of a quick brainstorming. Tell me what you think
- of it and make suggestions.
-
- All actions are done via channel handles. These are "black boxes" that can
- only be accessed via Taglists, setting or changing attributes.
-
- I currently do not know how to provide a queueing mechanism similar to that
- of audio.device. This would be important in order to play a sample in
- several parts without an audible interruption - and of course this is very
- important for the audio.device emulation!
-
-
-
- cybersound.library
- ------------------
-
- Channel functions:
-
- OpenChannel(TagList) : gets you a new channel handle
- SetChannelAttrs(TagList) : modifies the channels attributes
- GetChannelAttrs(TagList) : requests the channels attributes
- ResetChannel(TagList) : reset (just like after OpenChannel)
- CloseChannel() : delete the channel
-
-
- Replay functions:
-
- Start() : start playing (from the beginning)
- Stop() : stop playing
- Restart() : restart playing
- Reverse() : change replay direction (is this necessary? a tag will do)
- Release() : break the repeat, play the stuff after the repeat part
-
-
- Editing functions:
-
- Scale(From, To) : scale the sample
- Resample(FromFreq, ToFreq) : horizontal stretch
- Normalize(Flags) : vertical stretch (to use full dynamics)
- TypeConvert(ToType) : recalculation into other sample format
-
-
- Attribute Tags:
-
- SoundDriver : name of the sound driver for replay
- Left_Sample : pointer to first left sample word/byte
- Right_Sample : pointer to first right sample word/byte
- Sample_Length : number of sample words/bytes in the sample
- Sample_Type : 8 / 16 bit, signed/unsigned, etc..
- Frequency : ...
- Volume : ...
- Direction : forward, backward
- LR_Panning : stereo panning
- FB_Panning : for DolbySurround (?)
- Repeat_Start : beginning of the repeat part
- Repeat_Length : size of the repeat part
- Repeat_Count : number of repeats
- Repeat_Method : normal repeat, ping-pong, etc..
- Current_Offset : position in the sample
- Current_Status : playing, paused, stopped, etc...
-
-
-
- sound drivers
- -------------
-
- *well-defined, but future-expandable layout as Amiga shared libraries
-
- *asynchronous design (via callback-routines), not necessarily linked
- to tasks - may use interrupt code/calls as well.
-
-
-
- CyberSound prefs program
- ------------------------
-
- *every driver gets its own prefs
-
- ListView: sound driver selection
- Toggle: default sound driver
- Switch: adaptive sampling rate / constant rate
- Toggle: oversampling
- Slider: 8 bit boost (0-8)
- Slider: 16 bit drop (0-8)
-
-
-
- 14Bit Prefs program
- -------------------
-
- D/A converter calibration
-
-
-
- CONTACT ADDRESS
- ---------------
-
- EMAIL: flowerp@eikon.e-technik.tu-muenchen.de
-
- FidoNet: 2:2480/465
-
- SnailMail:
-
- Christian Buchner
- Ganghoferstraße 2
- 82110 Germering
- Germany
- Tel.: +49-(0)89/844872
-